package com.scs.application.modules.fsd.service;

import com.scs.application.modules.fsd.entity.FsdUser;
import com.scs.application.modules.fsd.vo.*;
import com.scs.application.modules.sys.model.RestResult;

import java.util.List;
import java.util.Map;

/**
 */
public interface SPDService {

    List<StockResult> getStockByStationCode(String stationCode);

    Integer getStockCountByStationCode(String stationCode);

    List<StockResult> getStockByListRfid(List<String> rfids);

    List<StockResult> getStockByListSn(List<String> sns);

    /**
     * 入库接口
     *
     * @param stationCode  站点编号
     * @param wiType       入库类型 WI：收货入库（智能柜第一次入库） WB：还货入库(手术备货入库) WT: 移库入库(智能柜之间的移库)
     * @param rfids        RFID编码
     * @param opApiVersion 接口版本 1.0
     * @param opFsdType    设备类型 fsd100
     * @param opNumber     工号
     * @return
     */
    RestResult wiNotify(String stationCode, String wiType, List<Map<String, String>> rfids, String opApiVersion, String opFsdType, String opNumber);

    /**
     * 出库接口（手术/间备货）
     *
     * @param stationCode       站点编号
     * @param woType            OP：手术间备货出库
     * @param OperationRoomCode 手术间代码 出库类别为OP时提供
     * @param rfids             RFID编码
     * @param opApiVersion      接口版本 1.0
     * @param opFsdType         设备类型 fsd100
     * @param opNumber          工号
     * @return
     */
    String woNotify(String stationCode, String woType, String OperationRoomCode, List<Map<String, String>> rfids, String opApiVersion, String opFsdType, String opNumber);

    String consume(String stationCode, List<Map<String, String>> rfids, String opApiVersion, String opFsdType, String opNumber);

    StorageResult getStorageByStorageCode(String stationCode);

    List<StorageResult> getBindStationCode();

    List<OperationResult> getOperation();

    List<OperationRoomResult> getOperationRoom();

    List<FsdUser> getUsers();

    /**
     * 实时库存通知
     * @param stationCode 站点编号
     * @param rfids 标签列表
     * @param opApiVersion 接口版本
     * @param opFsdType 设备类型 fsd100
     * @param opNumber 工号
     * @return
     */
    String scanNotify(String stationCode, List<String> rfids, String opApiVersion, String opFsdType, String opNumber);

    Map<String,List<ReportResult>> getReportDate(String stationCode, String sheetTab);
}
